#line 1 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
// html.rl written by Mitchell Foral. mitchell<att>caladbolg<dott>net.

/************************* Required for every parser *************************/
#ifndef RAGEL_HTML_PARSER
#define RAGEL_HTML_PARSER

#include "ragel_parser_macros.h"

// the name of the language
const char *HTML_LANG = "html";

// the languages entities
const char *html_entities[] = {
  "space", "comment", "doctype",
  "tag", "entity", "any"
};

// constants associated with the entities
enum {
  HTML_SPACE = 0, HTML_COMMENT, HTML_DOCTYPE,
  HTML_TAG, HTML_ENTITY, HTML_ANY
};

/*****************************************************************************/

#include "css.h"
#include "javascript.h"


#line 32 "ext/ohcount_native/ragel_parsers/html.h"
static const char _html_actions[] = {
	0, 1, 0, 1, 1, 1, 7, 1, 
	8, 1, 10, 1, 11, 1, 16, 1, 
	17, 1, 19, 1, 20, 1, 21, 1, 
	23, 1, 25, 1, 26, 1, 29, 1, 
	30, 1, 36, 1, 37, 1, 40, 1, 
	41, 1, 43, 1, 44, 1, 45, 1, 
	46, 1, 47, 1, 48, 1, 49, 1, 
	50, 1, 51, 1, 54, 1, 55, 1, 
	56, 1, 57, 1, 59, 1, 60, 1, 
	61, 1, 62, 1, 63, 1, 64, 1, 
	67, 1, 68, 1, 69, 1, 70, 1, 
	71, 1, 73, 1, 74, 1, 75, 1, 
	76, 1, 77, 1, 79, 1, 80, 1, 
	83, 1, 84, 1, 85, 1, 86, 1, 
	88, 1, 89, 1, 92, 1, 93, 1, 
	94, 1, 95, 1, 96, 1, 99, 1, 
	103, 1, 104, 1, 105, 1, 106, 1, 
	109, 1, 110, 1, 111, 1, 112, 1, 
	115, 1, 116, 1, 117, 1, 118, 1, 
	119, 1, 120, 1, 121, 1, 123, 1, 
	124, 1, 125, 1, 126, 2, 0, 100, 
	2, 4, 3, 2, 5, 3, 2, 6, 
	3, 2, 8, 52, 2, 9, 53, 2, 
	11, 58, 2, 13, 12, 2, 14, 12, 
	2, 15, 12, 2, 17, 65, 2, 18, 
	66, 2, 20, 72, 2, 21, 23, 2, 
	22, 21, 2, 23, 21, 2, 26, 81, 
	2, 27, 82, 2, 30, 90, 2, 31, 
	91, 2, 37, 101, 2, 38, 102, 2, 
	39, 107, 2, 41, 108, 2, 42, 113, 
	2, 44, 114, 2, 46, 122, 2, 49, 
	9, 2, 49, 11, 2, 49, 18, 2, 
	49, 20, 2, 49, 27, 2, 49, 31, 
	2, 49, 38, 2, 49, 41, 2, 49, 
	44, 2, 49, 46, 3, 4, 3, 1, 
	3, 5, 3, 0, 3, 5, 3, 51, 
	3, 5, 3, 80, 3, 6, 3, 0, 
	3, 6, 3, 51, 3, 6, 3, 80, 
	3, 13, 12, 1, 3, 14, 12, 0, 
	3, 14, 12, 64, 3, 14, 12, 89, 
	3, 15, 12, 0, 3, 15, 12, 64, 
	3, 15, 12, 89, 3, 21, 39, 107, 
	3, 21, 42, 113, 3, 22, 21, 1, 
	3, 49, 0, 9, 3, 49, 0, 18, 
	3, 49, 0, 27, 3, 49, 0, 31, 
	4, 2, 0, 24, 78, 4, 2, 0, 
	28, 87, 5, 0, 32, 21, 33, 97, 
	5, 0, 34, 21, 35, 98, 5, 21, 
	2, 0, 24, 78, 5, 21, 2, 0, 
	28, 87
};

static const char _html_cond_offsets[] = {
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 1, 2, 2, 2, 
	3, 4, 4, 4, 5, 6, 7, 7, 
	7, 7, 7, 7, 8, 8, 8, 8, 
	8, 9, 9, 9, 9, 10, 11, 12, 
	12, 12, 12, 12, 13, 14, 14, 14, 
	15, 16, 16, 16, 17, 18, 19, 19, 
	19, 19, 19, 19, 19, 20, 21, 21, 
	22, 22, 22, 23, 23, 23, 23, 23, 
	24, 24, 24, 24, 25, 26, 27, 27, 
	27, 27, 27, 27, 27, 27, 28, 29, 
	29, 30, 30, 30, 30, 30, 30, 30, 
	30, 31, 32, 33, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 35, 36, 36, 37, 37, 
	37, 37, 37, 37, 37, 37, 37, 38, 
	39, 39, 40, 40, 40, 40, 41, 41, 
	42, 43, 43, 43, 43, 43, 43, 44, 
	44, 44, 44, 44, 44, 44, 44, 44, 
	44, 44, 45, 45, 46, 47, 47, 47, 
	47, 48, 48, 48, 48, 48, 48, 48, 
	48, 49, 49, 49, 49, 49, 49, 49, 
	49, 49, 49, 49, 49, 49, 49
};

static const char _html_cond_lengths[] = {
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 1, 1, 0, 0, 1, 
	1, 0, 0, 1, 1, 1, 0, 0, 
	0, 0, 0, 1, 0, 0, 0, 0, 
	1, 0, 0, 0, 1, 1, 1, 0, 
	0, 0, 0, 1, 1, 0, 0, 1, 
	1, 0, 0, 1, 1, 1, 0, 0, 
	0, 0, 0, 0, 1, 1, 0, 1, 
	0, 0, 1, 0, 0, 0, 0, 1, 
	0, 0, 0, 1, 1, 1, 0, 0, 
	0, 0, 0, 0, 0, 1, 1, 0, 
	1, 0, 0, 0, 0, 0, 0, 0, 
	1, 1, 1, 1, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 1, 1, 0, 1, 0, 0, 
	0, 0, 0, 0, 0, 0, 1, 1, 
	0, 1, 0, 0, 0, 1, 0, 1, 
	1, 0, 0, 0, 0, 0, 1, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 1, 0, 1, 1, 0, 0, 0, 
	1, 0, 0, 0, 0, 0, 0, 0, 
	1, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0
};

static const short _html_cond_keys[] = {
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 0
};

static const char _html_cond_spaces[] = {
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0
};

static const short _html_key_offsets[] = {
	0, 0, 1, 2, 3, 4, 6, 10, 
	12, 14, 16, 18, 19, 21, 24, 27, 
	29, 33, 36, 39, 42, 45, 48, 51, 
	54, 57, 60, 62, 63, 64, 66, 68, 
	70, 71, 73, 76, 79, 81, 85, 88, 
	91, 94, 95, 96, 108, 120, 123, 124, 
	136, 148, 151, 152, 163, 174, 186, 187, 
	188, 189, 191, 195, 203, 207, 208, 213, 
	217, 225, 229, 230, 235, 246, 257, 269, 
	270, 271, 272, 274, 286, 298, 301, 302, 
	314, 326, 329, 330, 341, 352, 364, 365, 
	367, 369, 371, 373, 375, 382, 389, 390, 
	397, 398, 402, 410, 414, 415, 420, 424, 
	432, 436, 437, 442, 453, 464, 476, 477, 
	479, 481, 483, 485, 487, 489, 496, 503, 
	504, 511, 512, 517, 520, 525, 528, 529, 
	530, 541, 552, 563, 575, 576, 580, 582, 
	584, 586, 588, 589, 591, 594, 597, 599, 
	603, 606, 609, 612, 615, 618, 621, 624, 
	627, 630, 632, 633, 634, 636, 638, 640, 
	641, 643, 646, 649, 651, 655, 658, 661, 
	664, 665, 666, 667, 668, 670, 672, 674, 
	676, 678, 680, 687, 694, 695, 702, 703, 
	705, 707, 709, 711, 713, 715, 717, 724, 
	731, 732, 739, 743, 746, 749, 762, 764, 
	776, 788, 789, 790, 794, 797, 798, 811, 
	813, 817, 821, 823, 826, 827, 831, 834, 
	836, 839, 853, 855, 867, 879, 880, 881, 
	882, 896, 898, 902, 906, 908, 911, 912, 
	913, 926, 928, 933, 938, 941, 942, 947, 
	950, 951, 952, 957, 960, 962, 965
};

static const short _html_trans_keys[] = {
	45, 45, 45, 45, 45, 62, 67, 84, 
	99, 116, 82, 114, 73, 105, 80, 112, 
	84, 116, 62, 62, 116, 62, 101, 116, 
	62, 116, 120, 62, 116, 47, 62, 101, 
	116, 62, 106, 116, 62, 97, 116, 62, 
	116, 118, 62, 97, 116, 62, 115, 116, 
	62, 99, 116, 62, 114, 116, 62, 105, 
	116, 62, 112, 116, 62, 116, 62, 62, 
	89, 121, 76, 108, 69, 101, 62, 62, 
	116, 62, 101, 116, 62, 116, 120, 62, 
	116, 47, 62, 101, 116, 62, 99, 116, 
	62, 115, 116, 62, 115, 116, 62, 62, 
	9, 10, 12, 32, 34, 92, 269, 525, 
	-128, 11, 14, 127, 9, 10, 12, 32, 
	34, 92, 269, 525, -128, 11, 14, 127, 
	10, 12, 13, 10, 9, 10, 12, 32, 
	39, 92, 269, 525, -128, 11, 14, 127, 
	9, 10, 12, 32, 39, 92, 269, 525, 
	-128, 11, 14, 127, 10, 12, 13, 10, 
	9, 10, 12, 32, 42, 269, 525, -128, 
	11, 14, 127, 9, 10, 12, 32, 42, 
	269, 525, -128, 11, 14, 127, 9, 10, 
	12, 32, 42, 47, 269, 525, -128, 11, 
	14, 127, 10, 10, 42, 42, 47, 9, 
	32, 34, 92, 10, 12, 269, 525, -128, 
	11, 14, 127, 9, 32, 34, 92, 10, 
	9, 10, 32, 34, 92, 9, 32, 39, 
	92, 10, 12, 269, 525, -128, 11, 14, 
	127, 9, 32, 39, 92, 10, 9, 10, 
	32, 39, 92, 9, 10, 12, 32, 42, 
	269, 525, -128, 11, 14, 127, 9, 10, 
	12, 32, 42, 269, 525, -128, 11, 14, 
	127, 9, 10, 12, 32, 42, 47, 269, 
	525, -128, 11, 14, 127, 10, 10, 42, 
	42, 47, 9, 10, 12, 32, 34, 92, 
	269, 525, -128, 11, 14, 127, 9, 10, 
	12, 32, 34, 92, 269, 525, -128, 11, 
	14, 127, 10, 12, 13, 10, 9, 10, 
	12, 32, 39, 92, 269, 525, -128, 11, 
	14, 127, 9, 10, 12, 32, 39, 92, 
	269, 525, -128, 11, 14, 127, 10, 12, 
	13, 10, 9, 10, 12, 32, 42, 269, 
	525, -128, 11, 14, 127, 9, 10, 12, 
	32, 42, 269, 525, -128, 11, 14, 127, 
	9, 10, 12, 32, 42, 47, 269, 525, 
	-128, 11, 14, 127, 10, 83, 115, 84, 
	116, 89, 121, 76, 108, 69, 101, 9, 
	10, 12, 32, 62, 269, 525, 9, 10, 
	12, 32, 62, 269, 525, 10, 9, 10, 
	12, 32, 62, 269, 525, 10, 9, 32, 
	34, 92, 10, 12, 269, 525, -128, 11, 
	14, 127, 9, 32, 34, 92, 10, 9, 
	10, 32, 34, 92, 9, 32, 39, 92, 
	10, 12, 269, 525, -128, 11, 14, 127, 
	9, 32, 39, 92, 10, 9, 10, 32, 
	39, 92, 9, 10, 12, 32, 42, 269, 
	525, -128, 11, 14, 127, 9, 10, 12, 
	32, 42, 269, 525, -128, 11, 14, 127, 
	9, 10, 12, 32, 42, 47, 269, 525, 
	-128, 11, 14, 127, 10, 83, 115, 67, 
	99, 82, 114, 73, 105, 80, 112, 84, 
	116, 9, 10, 12, 32, 62, 269, 525, 
	9, 10, 12, 32, 62, 269, 525, 10, 
	9, 10, 12, 32, 62, 269, 525, 10, 
	10, 34, 92, 12, 13, 10, 12, 13, 
	10, 39, 92, 12, 13, 10, 12, 13, 
	45, 45, 9, 10, 12, 32, 45, 269, 
	525, -128, 11, 14, 127, 9, 10, 12, 
	32, 45, 269, 525, -128, 11, 14, 127, 
	9, 10, 12, 32, 45, 269, 525, -128, 
	11, 14, 127, 9, 10, 12, 32, 45, 
	62, 269, 525, -128, 11, 14, 127, 10, 
	67, 84, 99, 116, 82, 114, 73, 105, 
	80, 112, 84, 116, 62, 62, 116, 62, 
	101, 116, 62, 116, 120, 62, 116, 47, 
	62, 101, 116, 62, 106, 116, 62, 97, 
	116, 62, 116, 118, 62, 97, 116, 62, 
	115, 116, 62, 99, 116, 62, 114, 116, 
	62, 105, 116, 62, 112, 116, 62, 116, 
	62, 62, 89, 121, 76, 108, 69, 101, 
	62, 62, 116, 62, 101, 116, 62, 116, 
	120, 62, 116, 47, 62, 101, 116, 62, 
	99, 116, 62, 115, 116, 62, 115, 116, 
	62, 62, 10, 42, 42, 47, 83, 115, 
	84, 116, 89, 121, 76, 108, 69, 101, 
	9, 10, 12, 32, 62, 269, 525, 9, 
	10, 12, 32, 62, 269, 525, 10, 9, 
	10, 12, 32, 62, 269, 525, 42, 42, 
	47, 83, 115, 67, 99, 82, 114, 73, 
	105, 80, 112, 84, 116, 9, 10, 12, 
	32, 62, 269, 525, 9, 10, 12, 32, 
	62, 269, 525, 10, 9, 10, 12, 32, 
	62, 269, 525, 32, 60, 9, 13, 32, 
	9, 13, 33, 83, 115, 9, 10, 12, 
	32, 34, 39, 47, 269, 525, -128, 8, 
	14, 127, 9, 32, 9, 10, 12, 32, 
	34, 92, 269, 525, -128, 11, 14, 127, 
	9, 10, 12, 32, 39, 92, 269, 525, 
	-128, 11, 14, 127, 42, 10, 32, 47, 
	9, 13, 32, 9, 13, 42, 9, 10, 
	12, 32, 34, 39, 47, 269, 525, -128, 
	8, 14, 127, 9, 32, 9, 32, 34, 
	92, 9, 32, 39, 92, 42, 47, 10, 
	12, 13, 10, 32, 47, 9, 13, 32, 
	9, 13, 42, 47, 10, 12, 13, 9, 
	10, 12, 32, 34, 39, 47, 60, 269, 
	525, -128, 8, 14, 127, 9, 32, 9, 
	10, 12, 32, 34, 92, 269, 525, -128, 
	11, 14, 127, 9, 10, 12, 32, 39, 
	92, 269, 525, -128, 11, 14, 127, 42, 
	47, 10, 9, 10, 12, 32, 34, 39, 
	47, 60, 269, 525, -128, 8, 14, 127, 
	9, 32, 9, 32, 34, 92, 9, 32, 
	39, 92, 42, 47, 10, 12, 13, 47, 
	10, 9, 10, 12, 32, 34, 39, 60, 
	269, 525, -128, 8, 14, 127, 9, 32, 
	10, 34, 92, 12, 13, 10, 39, 92, 
	12, 13, 33, 83, 115, 10, 32, 47, 
	60, 9, 13, 32, 9, 13, 42, 47, 
	32, 47, 60, 9, 13, 32, 9, 13, 
	42, 47, 10, 12, 13, 47, 0
};

static const char _html_single_lengths[] = {
	0, 1, 1, 1, 1, 2, 4, 2, 
	2, 2, 2, 1, 2, 3, 3, 2, 
	4, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 2, 1, 1, 2, 2, 2, 
	1, 2, 3, 3, 2, 4, 3, 3, 
	3, 1, 1, 8, 8, 1, 1, 8, 
	8, 1, 1, 7, 7, 8, 1, 1, 
	1, 2, 4, 4, 4, 1, 5, 4, 
	4, 4, 1, 5, 7, 7, 8, 1, 
	1, 1, 2, 8, 8, 1, 1, 8, 
	8, 1, 1, 7, 7, 8, 1, 2, 
	2, 2, 2, 2, 7, 7, 1, 7, 
	1, 4, 4, 4, 1, 5, 4, 4, 
	4, 1, 5, 7, 7, 8, 1, 2, 
	2, 2, 2, 2, 2, 7, 7, 1, 
	7, 1, 3, 1, 3, 1, 1, 1, 
	7, 7, 7, 8, 1, 4, 2, 2, 
	2, 2, 1, 2, 3, 3, 2, 4, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 2, 1, 1, 2, 2, 2, 1, 
	2, 3, 3, 2, 4, 3, 3, 3, 
	1, 1, 1, 1, 2, 2, 2, 2, 
	2, 2, 7, 7, 1, 7, 1, 2, 
	2, 2, 2, 2, 2, 2, 7, 7, 
	1, 7, 2, 1, 3, 9, 2, 8, 
	8, 1, 1, 2, 1, 1, 9, 2, 
	4, 4, 2, 1, 1, 2, 1, 2, 
	1, 10, 2, 8, 8, 1, 1, 1, 
	10, 2, 4, 4, 2, 1, 1, 1, 
	9, 2, 3, 3, 3, 1, 3, 1, 
	1, 1, 3, 1, 2, 1, 1
};

static const char _html_range_lengths[] = {
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 2, 2, 1, 0, 2, 
	2, 1, 0, 2, 2, 2, 0, 0, 
	0, 0, 0, 2, 0, 0, 0, 0, 
	2, 0, 0, 0, 2, 2, 2, 0, 
	0, 0, 0, 2, 2, 1, 0, 2, 
	2, 1, 0, 2, 2, 2, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 2, 0, 0, 0, 0, 2, 
	0, 0, 0, 2, 2, 2, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 1, 1, 1, 1, 0, 0, 
	2, 2, 2, 2, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 1, 1, 0, 2, 0, 2, 
	2, 0, 0, 1, 1, 0, 2, 0, 
	0, 0, 0, 1, 0, 1, 1, 0, 
	1, 2, 0, 2, 2, 0, 0, 0, 
	2, 0, 0, 0, 0, 1, 0, 0, 
	2, 0, 1, 1, 0, 0, 1, 1, 
	0, 0, 1, 1, 0, 1, 0
};

static const short _html_index_offsets[] = {
	0, 0, 2, 4, 6, 8, 11, 16, 
	19, 22, 25, 28, 30, 33, 37, 41, 
	44, 49, 53, 57, 61, 65, 69, 73, 
	77, 81, 85, 88, 90, 92, 95, 98, 
	101, 103, 106, 110, 114, 117, 122, 126, 
	130, 134, 136, 138, 149, 160, 163, 165, 
	176, 187, 190, 192, 202, 212, 223, 225, 
	227, 229, 232, 237, 244, 249, 251, 257, 
	262, 269, 274, 276, 282, 292, 302, 313, 
	315, 317, 319, 322, 333, 344, 347, 349, 
	360, 371, 374, 376, 386, 396, 407, 409, 
	412, 415, 418, 421, 424, 432, 440, 442, 
	450, 452, 457, 464, 469, 471, 477, 482, 
	489, 494, 496, 502, 512, 522, 533, 535, 
	538, 541, 544, 547, 550, 553, 561, 569, 
	571, 579, 581, 586, 589, 594, 597, 599, 
	601, 611, 621, 631, 642, 644, 649, 652, 
	655, 658, 661, 663, 666, 670, 674, 677, 
	682, 686, 690, 694, 698, 702, 706, 710, 
	714, 718, 721, 723, 725, 728, 731, 734, 
	736, 739, 743, 747, 750, 755, 759, 763, 
	767, 769, 771, 773, 775, 778, 781, 784, 
	787, 790, 793, 801, 809, 811, 819, 821, 
	824, 827, 830, 833, 836, 839, 842, 850, 
	858, 860, 868, 872, 875, 879, 891, 894, 
	905, 916, 918, 920, 924, 927, 929, 941, 
	944, 949, 954, 957, 960, 962, 966, 969, 
	972, 975, 988, 991, 1002, 1013, 1015, 1017, 
	1019, 1032, 1035, 1040, 1045, 1048, 1051, 1053, 
	1055, 1067, 1070, 1075, 1080, 1084, 1086, 1091, 
	1094, 1096, 1098, 1103, 1106, 1109, 1112
};

static const unsigned char _html_trans_targs[] = {
	2, 194, 3, 194, 4, 3, 5, 3, 
	5, 194, 3, 7, 29, 7, 29, 194, 
	8, 8, 194, 9, 9, 194, 10, 10, 
	194, 11, 11, 194, 194, 12, 194, 13, 
	12, 194, 14, 13, 12, 194, 13, 15, 
	12, 194, 16, 12, 17, 194, 14, 13, 
	12, 194, 18, 13, 12, 194, 19, 13, 
	12, 194, 13, 20, 12, 194, 21, 13, 
	12, 194, 22, 13, 12, 194, 23, 13, 
	12, 194, 24, 13, 12, 194, 25, 13, 
	12, 194, 26, 13, 12, 194, 27, 12, 
	194, 28, 194, 28, 30, 30, 194, 31, 
	31, 194, 32, 32, 194, 194, 33, 194, 
	34, 33, 194, 35, 34, 33, 194, 34, 
	36, 33, 194, 37, 33, 38, 194, 35, 
	34, 33, 194, 39, 34, 33, 194, 40, 
	34, 33, 194, 41, 34, 33, 194, 42, 
	194, 42, 43, 44, 44, 43, 197, 45, 
	46, 44, 43, 43, 197, 43, 44, 44, 
	43, 197, 45, 46, 44, 43, 43, 197, 
	197, 197, 43, 44, 197, 47, 48, 48, 
	47, 197, 49, 50, 48, 47, 47, 197, 
	47, 48, 48, 47, 197, 49, 50, 48, 
	47, 47, 197, 197, 197, 47, 48, 197, 
	51, 52, 52, 51, 53, 54, 52, 51, 
	51, 197, 51, 52, 52, 51, 53, 54, 
	52, 51, 51, 197, 51, 52, 52, 51, 
	53, 197, 54, 52, 51, 51, 197, 52, 
	197, 197, 0, 57, 56, 57, 203, 56, 
	58, 58, 206, 59, 58, 60, 60, 61, 
	62, 58, 58, 206, 58, 58, 206, 59, 
	58, 60, 206, 58, 60, 58, 206, 59, 
	58, 63, 63, 206, 64, 63, 65, 65, 
	66, 67, 63, 63, 206, 63, 63, 206, 
	64, 63, 65, 206, 63, 65, 63, 206, 
	64, 63, 68, 69, 69, 68, 70, 71, 
	69, 68, 68, 206, 68, 69, 69, 68, 
	70, 71, 69, 68, 68, 206, 68, 69, 
	69, 68, 70, 206, 71, 69, 68, 68, 
	206, 69, 206, 206, 0, 74, 73, 74, 
	213, 73, 75, 76, 76, 75, 217, 77, 
	78, 76, 75, 75, 217, 75, 76, 76, 
	75, 217, 77, 78, 76, 75, 75, 217, 
	217, 217, 75, 76, 217, 79, 80, 80, 
	79, 217, 81, 82, 80, 79, 79, 217, 
	79, 80, 80, 79, 217, 81, 82, 80, 
	79, 79, 217, 217, 217, 79, 80, 217, 
	83, 84, 84, 83, 85, 86, 84, 83, 
	83, 217, 83, 84, 84, 83, 85, 86, 
	84, 83, 83, 217, 83, 84, 84, 83, 
	85, 217, 86, 84, 83, 83, 217, 84, 
	217, 88, 88, 217, 89, 89, 217, 90, 
	90, 217, 91, 91, 217, 92, 92, 217, 
	92, 93, 93, 92, 217, 94, 95, 217, 
	92, 93, 93, 92, 217, 94, 95, 217, 
	93, 217, 92, 93, 93, 92, 217, 94, 
	95, 217, 217, 0, 97, 97, 224, 98, 
	97, 99, 99, 100, 101, 97, 97, 224, 
	97, 97, 224, 98, 97, 99, 224, 97, 
	99, 97, 224, 98, 97, 102, 102, 224, 
	103, 102, 104, 104, 105, 106, 102, 102, 
	224, 102, 102, 224, 103, 102, 104, 224, 
	102, 104, 102, 224, 103, 102, 107, 108, 
	108, 107, 109, 110, 108, 107, 107, 224, 
	107, 108, 108, 107, 109, 110, 108, 107, 
	107, 224, 107, 108, 108, 107, 109, 224, 
	110, 108, 107, 107, 224, 108, 224, 112, 
	112, 224, 113, 113, 224, 114, 114, 224, 
	115, 115, 224, 116, 116, 224, 117, 117, 
	224, 117, 118, 118, 117, 224, 119, 120, 
	224, 117, 118, 118, 117, 224, 119, 120, 
	224, 118, 224, 117, 118, 118, 117, 224, 
	119, 120, 224, 224, 0, 232, 232, 123, 
	232, 122, 232, 232, 122, 232, 232, 125, 
	232, 124, 232, 232, 124, 127, 232, 128, 
	232, 128, 129, 129, 128, 130, 132, 129, 
	128, 128, 232, 128, 129, 129, 128, 130, 
	132, 129, 128, 128, 232, 128, 129, 129, 
	128, 131, 132, 129, 128, 128, 232, 128, 
	129, 129, 128, 131, 232, 132, 129, 128, 
	128, 232, 129, 232, 134, 156, 134, 156, 
	232, 135, 135, 232, 136, 136, 232, 137, 
	137, 232, 138, 138, 232, 232, 139, 232, 
	140, 139, 232, 141, 140, 139, 232, 140, 
	142, 139, 232, 143, 139, 144, 232, 141, 
	140, 139, 232, 145, 140, 139, 232, 146, 
	140, 139, 232, 140, 147, 139, 232, 148, 
	140, 139, 232, 149, 140, 139, 232, 150, 
	140, 139, 232, 151, 140, 139, 232, 152, 
	140, 139, 232, 153, 140, 139, 232, 154, 
	139, 232, 155, 232, 155, 157, 157, 232, 
	158, 158, 232, 159, 159, 232, 232, 160, 
	232, 161, 160, 232, 162, 161, 160, 232, 
	161, 163, 160, 232, 164, 160, 165, 232, 
	162, 161, 160, 232, 166, 161, 160, 232, 
	167, 161, 160, 232, 168, 161, 160, 232, 
	169, 232, 169, 232, 0, 172, 171, 172, 
	238, 171, 174, 174, 238, 175, 175, 238, 
	176, 176, 238, 177, 177, 238, 178, 178, 
	238, 178, 179, 179, 178, 238, 180, 181, 
	238, 178, 179, 179, 178, 238, 180, 181, 
	238, 179, 238, 178, 179, 179, 178, 238, 
	180, 181, 238, 183, 182, 183, 242, 182, 
	185, 185, 242, 186, 186, 242, 187, 187, 
	242, 188, 188, 242, 189, 189, 242, 190, 
	190, 242, 190, 191, 191, 190, 242, 192, 
	193, 242, 190, 191, 191, 190, 242, 192, 
	193, 242, 191, 242, 190, 191, 191, 190, 
	242, 192, 193, 242, 195, 196, 195, 194, 
	195, 195, 194, 1, 6, 6, 194, 198, 
	197, 197, 198, 199, 200, 201, 55, 202, 
	197, 197, 0, 198, 198, 197, 43, 44, 
	44, 43, 197, 45, 46, 44, 43, 43, 
	197, 47, 48, 48, 47, 197, 49, 50, 
	48, 47, 47, 197, 51, 197, 197, 197, 
	204, 205, 204, 203, 204, 204, 203, 56, 
	203, 207, 206, 206, 207, 208, 209, 210, 
	72, 212, 206, 206, 0, 207, 207, 206, 
	58, 58, 206, 59, 58, 63, 63, 206, 
	64, 63, 68, 211, 206, 206, 206, 211, 
	206, 206, 214, 215, 214, 213, 214, 214, 
	213, 73, 216, 213, 213, 213, 216, 218, 
	217, 217, 218, 219, 220, 221, 222, 96, 
	223, 217, 217, 0, 218, 218, 217, 75, 
	76, 76, 75, 217, 77, 78, 76, 75, 
	75, 217, 79, 80, 80, 79, 217, 81, 
	82, 80, 79, 79, 217, 83, 217, 87, 
	217, 217, 217, 225, 224, 224, 225, 226, 
	227, 228, 230, 121, 231, 224, 224, 0, 
	225, 225, 224, 97, 97, 224, 98, 97, 
	102, 102, 224, 103, 102, 107, 229, 224, 
	224, 224, 229, 111, 224, 224, 224, 233, 
	232, 232, 233, 234, 235, 236, 170, 237, 
	232, 232, 0, 233, 233, 232, 232, 232, 
	123, 232, 122, 232, 232, 125, 232, 124, 
	126, 133, 133, 232, 232, 232, 239, 240, 
	241, 239, 238, 239, 239, 238, 171, 238, 
	173, 238, 243, 244, 246, 243, 242, 243, 
	243, 242, 182, 245, 242, 242, 242, 245, 
	184, 242, 194, 194, 194, 194, 194, 194, 
	194, 194, 194, 194, 194, 194, 194, 194, 
	194, 194, 194, 194, 194, 194, 194, 194, 
	194, 194, 194, 194, 194, 194, 194, 194, 
	194, 194, 194, 194, 194, 194, 194, 194, 
	194, 194, 194, 194, 197, 197, 197, 197, 
	197, 197, 197, 197, 197, 197, 197, 197, 
	203, 203, 206, 206, 206, 206, 206, 206, 
	206, 206, 206, 206, 206, 206, 206, 206, 
	213, 213, 217, 217, 217, 217, 217, 217, 
	217, 217, 217, 217, 217, 217, 217, 217, 
	217, 217, 217, 217, 217, 217, 217, 224, 
	224, 224, 224, 224, 224, 224, 224, 224, 
	224, 224, 224, 224, 224, 224, 224, 224, 
	224, 224, 224, 224, 224, 224, 224, 232, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 238, 
	238, 238, 238, 238, 238, 238, 238, 238, 
	238, 238, 242, 242, 242, 242, 242, 242, 
	242, 242, 242, 242, 242, 242, 194, 194, 
	197, 197, 197, 197, 197, 203, 203, 206, 
	206, 206, 206, 206, 206, 213, 213, 213, 
	217, 217, 217, 217, 217, 217, 224, 224, 
	224, 224, 224, 224, 224, 232, 232, 232, 
	232, 232, 238, 238, 238, 242, 242, 242, 
	242, 0
};

static const short _html_trans_actions[] = {
	47, 163, 47, 163, 47, 47, 47, 47, 
	47, 243, 47, 0, 0, 0, 0, 163, 
	0, 0, 163, 0, 0, 163, 0, 0, 
	163, 0, 0, 163, 163, 0, 163, 0, 
	0, 163, 0, 0, 0, 163, 0, 0, 
	0, 163, 0, 0, 0, 163, 0, 0, 
	0, 163, 0, 0, 0, 163, 0, 0, 
	0, 163, 0, 0, 0, 163, 0, 0, 
	0, 163, 0, 0, 0, 163, 0, 0, 
	0, 163, 0, 0, 0, 163, 0, 0, 
	0, 163, 0, 0, 0, 163, 0, 0, 
	163, 0, 155, 0, 0, 0, 163, 0, 
	0, 163, 0, 0, 163, 163, 0, 163, 
	0, 0, 163, 0, 0, 0, 163, 0, 
	0, 0, 163, 0, 0, 0, 163, 0, 
	0, 0, 163, 0, 0, 0, 163, 0, 
	0, 0, 163, 0, 0, 0, 163, 0, 
	153, 0, 0, 0, 0, 0, 57, 0, 
	0, 0, 1, 1, 65, 174, 174, 174, 
	174, 296, 174, 174, 174, 292, 292, 65, 
	65, 65, 1, 0, 65, 0, 0, 0, 
	0, 57, 0, 0, 0, 1, 1, 65, 
	171, 171, 171, 171, 284, 171, 171, 171, 
	280, 280, 65, 65, 65, 1, 0, 65, 
	0, 0, 0, 0, 3, 0, 0, 3, 
	3, 65, 168, 168, 168, 168, 276, 168, 
	168, 276, 276, 65, 0, 0, 0, 0, 
	3, 55, 0, 0, 3, 3, 65, 0, 
	65, 177, 0, 11, 11, 11, 183, 11, 
	0, 0, 77, 0, 1, 0, 0, 0, 
	0, 1, 1, 87, 192, 192, 324, 192, 
	320, 0, 87, 192, 320, 192, 324, 192, 
	320, 0, 0, 77, 0, 1, 0, 0, 
	0, 0, 1, 1, 87, 189, 189, 312, 
	189, 308, 0, 87, 189, 308, 189, 312, 
	189, 308, 0, 0, 0, 0, 3, 0, 
	0, 3, 3, 87, 186, 186, 186, 186, 
	304, 186, 186, 304, 304, 87, 0, 0, 
	0, 0, 3, 75, 0, 0, 3, 3, 
	87, 0, 87, 195, 0, 19, 19, 19, 
	201, 19, 0, 0, 0, 0, 101, 0, 
	0, 0, 1, 1, 109, 174, 174, 174, 
	174, 300, 174, 174, 174, 292, 292, 109, 
	109, 109, 1, 0, 109, 0, 0, 0, 
	0, 101, 0, 0, 0, 1, 1, 109, 
	171, 171, 171, 171, 288, 171, 171, 171, 
	280, 280, 109, 109, 109, 1, 0, 109, 
	0, 0, 0, 0, 3, 0, 0, 3, 
	3, 109, 168, 168, 168, 168, 276, 168, 
	168, 276, 276, 109, 0, 0, 0, 0, 
	3, 99, 0, 0, 3, 3, 109, 0, 
	109, 0, 0, 109, 0, 0, 109, 0, 
	0, 109, 0, 0, 109, 0, 0, 109, 
	0, 23, 23, 0, 360, 0, 23, 109, 
	21, 204, 204, 21, 382, 21, 204, 109, 
	23, 109, 21, 210, 204, 21, 382, 21, 
	204, 109, 213, 0, 0, 0, 113, 0, 
	1, 0, 0, 0, 0, 1, 1, 123, 
	192, 192, 328, 192, 320, 0, 123, 192, 
	320, 192, 328, 192, 320, 0, 0, 113, 
	0, 1, 0, 0, 0, 0, 1, 1, 
	123, 189, 189, 316, 189, 308, 0, 123, 
	189, 308, 189, 316, 189, 308, 0, 0, 
	0, 0, 3, 0, 0, 3, 3, 123, 
	186, 186, 186, 186, 304, 186, 186, 304, 
	304, 123, 0, 0, 0, 0, 3, 111, 
	0, 0, 3, 3, 123, 0, 123, 0, 
	0, 123, 0, 0, 123, 0, 0, 123, 
	0, 0, 123, 0, 0, 123, 0, 0, 
	123, 0, 23, 23, 0, 365, 0, 23, 
	123, 21, 204, 204, 21, 388, 21, 204, 
	123, 23, 123, 21, 210, 204, 21, 388, 
	21, 204, 123, 219, 0, 133, 165, 0, 
	133, 0, 133, 133, 0, 133, 165, 0, 
	133, 0, 133, 133, 0, 0, 133, 3, 
	133, 0, 0, 0, 0, 3, 0, 0, 
	3, 3, 133, 207, 207, 207, 207, 340, 
	207, 207, 340, 340, 133, 0, 0, 0, 
	0, 3, 0, 0, 3, 3, 133, 0, 
	0, 0, 0, 3, 125, 0, 0, 3, 
	3, 133, 0, 133, 0, 0, 0, 0, 
	133, 0, 0, 133, 0, 0, 133, 0, 
	0, 133, 0, 0, 133, 133, 0, 133, 
	0, 0, 133, 0, 0, 0, 133, 0, 
	0, 0, 133, 0, 0, 0, 133, 0, 
	0, 0, 133, 0, 0, 0, 133, 0, 
	0, 0, 133, 0, 0, 0, 133, 0, 
	0, 0, 133, 0, 0, 0, 133, 0, 
	0, 0, 133, 0, 0, 0, 133, 0, 
	0, 0, 133, 0, 0, 0, 133, 0, 
	0, 133, 0, 376, 0, 0, 0, 133, 
	0, 0, 133, 0, 0, 133, 133, 0, 
	133, 0, 0, 133, 0, 0, 0, 133, 
	0, 0, 0, 133, 0, 0, 0, 133, 
	0, 0, 0, 133, 0, 0, 0, 133, 
	0, 0, 0, 133, 0, 0, 0, 133, 
	0, 370, 0, 225, 0, 39, 39, 39, 
	234, 39, 0, 0, 141, 0, 0, 141, 
	0, 0, 141, 0, 0, 141, 0, 0, 
	141, 0, 23, 23, 0, 231, 0, 23, 
	141, 21, 204, 204, 21, 332, 21, 204, 
	141, 23, 141, 21, 210, 204, 21, 332, 
	21, 204, 141, 43, 43, 43, 240, 43, 
	0, 0, 151, 0, 0, 151, 0, 0, 
	151, 0, 0, 151, 0, 0, 151, 0, 
	0, 151, 0, 23, 23, 0, 237, 0, 
	23, 151, 21, 204, 204, 21, 336, 21, 
	204, 151, 23, 151, 21, 210, 204, 21, 
	336, 21, 204, 151, 45, 273, 45, 157, 
	45, 45, 159, 47, 0, 0, 161, 5, 
	177, 177, 5, 344, 344, 246, 7, 7, 
	180, 180, 0, 5, 5, 59, 0, 0, 
	0, 0, 57, 0, 0, 0, 1, 1, 
	63, 0, 0, 0, 0, 57, 0, 0, 
	0, 1, 1, 63, 3, 63, 177, 61, 
	9, 249, 9, 67, 9, 9, 69, 11, 
	71, 13, 195, 195, 13, 348, 348, 252, 
	15, 15, 198, 198, 0, 13, 13, 79, 
	0, 0, 77, 0, 1, 0, 0, 77, 
	0, 1, 3, 3, 85, 81, 81, 0, 
	195, 83, 17, 255, 17, 89, 17, 17, 
	91, 19, 19, 95, 93, 93, 19, 25, 
	213, 213, 25, 352, 352, 258, 258, 27, 
	27, 216, 216, 0, 25, 25, 103, 0, 
	0, 0, 0, 101, 0, 0, 0, 1, 
	1, 107, 0, 0, 0, 0, 101, 0, 
	0, 0, 1, 1, 107, 3, 107, 0, 
	107, 213, 105, 29, 219, 219, 29, 356, 
	356, 261, 261, 31, 31, 222, 222, 0, 
	29, 29, 115, 0, 0, 113, 0, 1, 
	0, 0, 113, 0, 1, 3, 3, 121, 
	117, 117, 0, 0, 121, 219, 119, 33, 
	225, 225, 33, 264, 264, 264, 35, 35, 
	228, 228, 0, 33, 33, 127, 131, 165, 
	0, 131, 0, 131, 165, 0, 131, 0, 
	0, 0, 0, 131, 225, 129, 37, 267, 
	53, 37, 135, 37, 37, 137, 39, 139, 
	0, 139, 41, 270, 53, 41, 143, 41, 
	41, 145, 43, 43, 149, 147, 147, 43, 
	0, 149, 163, 163, 163, 163, 163, 163, 
	163, 163, 163, 163, 163, 163, 163, 163, 
	163, 163, 163, 163, 163, 163, 163, 163, 
	163, 163, 163, 163, 163, 163, 163, 163, 
	163, 163, 163, 163, 163, 163, 163, 163, 
	163, 163, 163, 163, 65, 65, 65, 65, 
	65, 65, 65, 65, 65, 65, 65, 65, 
	73, 73, 87, 87, 87, 87, 87, 87, 
	87, 87, 87, 87, 87, 87, 87, 87, 
	97, 97, 109, 109, 109, 109, 109, 109, 
	109, 109, 109, 109, 109, 109, 109, 109, 
	109, 109, 109, 109, 109, 109, 109, 123, 
	123, 123, 123, 123, 123, 123, 123, 123, 
	123, 123, 123, 123, 123, 123, 123, 123, 
	123, 123, 123, 123, 123, 123, 123, 133, 
	133, 133, 133, 133, 133, 133, 133, 133, 
	133, 133, 133, 133, 133, 133, 133, 133, 
	133, 133, 133, 133, 133, 133, 133, 133, 
	133, 133, 133, 133, 133, 133, 133, 133, 
	133, 133, 133, 133, 133, 133, 133, 133, 
	133, 133, 133, 133, 133, 133, 133, 141, 
	141, 141, 141, 141, 141, 141, 141, 141, 
	141, 141, 151, 151, 151, 151, 151, 151, 
	151, 151, 151, 151, 151, 151, 159, 161, 
	59, 63, 63, 63, 61, 69, 71, 79, 
	85, 85, 85, 81, 83, 91, 95, 93, 
	103, 107, 107, 107, 107, 105, 115, 121, 
	121, 121, 117, 121, 119, 127, 131, 131, 
	131, 129, 137, 139, 139, 145, 149, 147, 
	149, 0
};

static const short _html_to_state_actions[] = {
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 49, 0, 0, 49, 0, 0, 
	0, 0, 0, 49, 0, 0, 49, 0, 
	0, 0, 0, 0, 0, 49, 0, 0, 
	0, 49, 0, 0, 0, 0, 0, 0, 
	49, 0, 0, 0, 0, 0, 0, 0, 
	49, 0, 0, 0, 0, 0, 49, 0, 
	0, 0, 49, 0, 0, 0, 0
};

static const short _html_from_state_actions[] = {
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 51, 0, 0, 51, 0, 0, 
	0, 0, 0, 51, 0, 0, 51, 0, 
	0, 0, 0, 0, 0, 51, 0, 0, 
	0, 51, 0, 0, 0, 0, 0, 0, 
	51, 0, 0, 0, 0, 0, 0, 0, 
	51, 0, 0, 0, 0, 0, 51, 0, 
	0, 0, 51, 0, 0, 0, 0
};

static const short _html_eof_trans[] = {
	0, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 
	1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 
	1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 
	1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 
	1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 
	1156, 1156, 1156, 1168, 1168, 1168, 1168, 1168, 
	1168, 1168, 1168, 1168, 1168, 1168, 1168, 0, 
	1170, 1170, 1184, 1184, 1184, 1184, 1184, 1184, 
	1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 
	0, 1186, 1186, 1207, 1207, 1207, 1207, 1207, 
	1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 
	1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 
	0, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 
	1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 
	1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 
	1231, 0, 1279, 1279, 1279, 1279, 1279, 1279, 
	1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 
	1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 
	1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 
	1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 
	1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 
	1279, 1279, 0, 1290, 1290, 1290, 1290, 1290, 
	1290, 1290, 1290, 1290, 1290, 1290, 1302, 1302, 
	1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 
	1302, 1302, 0, 1303, 1304, 0, 1305, 1308, 
	1308, 1308, 1309, 0, 1310, 1311, 0, 1312, 
	1315, 1315, 1315, 1316, 1317, 0, 1318, 1319, 
	1320, 0, 1321, 1325, 1325, 1325, 1325, 1326, 
	0, 1327, 1332, 1332, 1332, 1331, 1332, 1333, 
	0, 1334, 1337, 1337, 1337, 1338, 0, 1339, 
	1341, 1341, 0, 1342, 1345, 1344, 1345
};

static const int html_start = 194;
static const int html_first_final = 194;
static const int html_error = 0;

static const int html_en_css_line = 197;
static const int html_en_css_entity = 203;
static const int html_en_js_line = 206;
static const int html_en_js_entity = 213;
static const int html_en_html_css_line = 217;
static const int html_en_html_js_line = 224;
static const int html_en_html_line = 232;
static const int html_en_html_css_entity = 238;
static const int html_en_html_js_entity = 242;
static const int html_en_html_entity = 194;

#line 33 "ext/ohcount_native/ragel_parsers/html.rl.tmp"

#line 107 "ext/ohcount_native/ragel_parsers/html.rl.tmp"

#line 301 "ext/ohcount_native/ragel_parsers/html.rl.tmp"


/************************* Required for every parser *************************/

/* Parses a string buffer with HTML markup.
 *
 * @param *buffer The string to parse.
 * @param length The length of the string to parse.
 * @param count Integer flag specifying whether or not to count lines. If yes,
 *   uses the Ragel machine optimized for counting. Otherwise uses the Ragel
 *   machine optimized for returning entity positions.
 * @param *callback Callback function. If count is set, callback is called for
 *   every line of code, comment, or blank with 'lcode', 'lcomment', and
 *   'lblank' respectively. Otherwise callback is called for each entity found.
 */
void parse_html(char *buffer, int length, int count,
  void (*callback) (const char *lang, const char *entity, int start, int end)
  ) {
  init

  
#line 927 "ext/ohcount_native/ragel_parsers/html.h"
	{
	cs = html_start;
	top = 0;
	ts = 0;
	te = 0;
	act = 0;
	}
#line 322 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
  cs = (count) ? html_en_html_line : html_en_html_entity;
  
#line 938 "ext/ohcount_native/ragel_parsers/html.h"
	{
	int _klen;
	unsigned int _trans;
	short _widec;
	const char *_acts;
	unsigned int _nacts;
	const short *_keys;

	if ( p == pe )
		goto _test_eof;
	if ( cs == 0 )
		goto _out;
_resume:
	_acts = _html_actions + _html_from_state_actions[cs];
	_nacts = (unsigned int) *_acts++;
	while ( _nacts-- > 0 ) {
		switch ( *_acts++ ) {
	case 48:
#line 1 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ts = p;}
	break;
#line 960 "ext/ohcount_native/ragel_parsers/html.h"
		}
	}

	_widec = (*p);
	_klen = _html_cond_lengths[cs];
	_keys = _html_cond_keys + (_html_cond_offsets[cs]*2);
	if ( _klen > 0 ) {
		const short *_lower = _keys;
		const short *_mid;
		const short *_upper = _keys + (_klen<<1) - 2;
		while (1) {
			if ( _upper < _lower )
				break;

			_mid = _lower + (((_upper-_lower) >> 1) & ~1);
			if ( _widec < _mid[0] )
				_upper = _mid - 2;
			else if ( _widec > _mid[1] )
				_lower = _mid + 2;
			else {
				switch ( _html_cond_spaces[_html_cond_offsets[cs] + ((_mid - _keys)>>1)] ) {
	case 0: {
		_widec = (short)(128 + ((*p) - -128));
		if ( 
#line 9 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
 p+1 < pe && *(p+1) != '\n'  ) _widec += 256;
		break;
	}
				}
				break;
			}
		}
	}

	_keys = _html_trans_keys + _html_key_offsets[cs];
	_trans = _html_index_offsets[cs];

	_klen = _html_single_lengths[cs];
	if ( _klen > 0 ) {
		const short *_lower = _keys;
		const short *_mid;
		const short *_upper = _keys + _klen - 1;
		while (1) {
			if ( _upper < _lower )
				break;

			_mid = _lower + ((_upper-_lower) >> 1);
			if ( _widec < *_mid )
				_upper = _mid - 1;
			else if ( _widec > *_mid )
				_lower = _mid + 1;
			else {
				_trans += (_mid - _keys);
				goto _match;
			}
		}
		_keys += _klen;
		_trans += _klen;
	}

	_klen = _html_range_lengths[cs];
	if ( _klen > 0 ) {
		const short *_lower = _keys;
		const short *_mid;
		const short *_upper = _keys + (_klen<<1) - 2;
		while (1) {
			if ( _upper < _lower )
				break;

			_mid = _lower + (((_upper-_lower) >> 1) & ~1);
			if ( _widec < _mid[0] )
				_upper = _mid - 2;
			else if ( _widec > _mid[1] )
				_lower = _mid + 2;
			else {
				_trans += ((_mid - _keys)>>1);
				goto _match;
			}
		}
		_trans += _klen;
	}

_match:
_eof_trans:
	cs = _html_trans_targs[_trans];

	if ( _html_trans_actions[_trans] == 0 )
		goto _again;

	_acts = _html_actions + _html_trans_actions[_trans];
	_nacts = (unsigned int) *_acts++;
	while ( _nacts-- > 0 )
	{
		switch ( *_acts++ )
		{
	case 0:
#line 53 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{
  if (!line_contains_code && !line_start) line_start = ts;
  line_contains_code = 1;
}
	break;
	case 1:
#line 58 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{
  if (!line_contains_code) {
    whole_line_comment = 1;
    if (!line_start) line_start = ts;
  }
}
	break;
	case 2:
#line 65 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{
  if (!line_contains_code && !whole_line_comment) seen = 0;
}
	break;
	case 3:
#line 37 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{
    switch(entity) {
    case CSS_SPACE:
      ls
      break;
    case CSS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(CSS_LANG)
      break;
    case NEWLINE:
      std_newline(CSS_LANG)
    }
  }
	break;
	case 4:
#line 55 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 5:
#line 64 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 6:
#line 74 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 7:
#line 85 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = CSS_SPACE; }
	break;
	case 8:
#line 88 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = NEWLINE;   }
	break;
	case 9:
#line 89 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = CSS_ANY;   }
	break;
	case 10:
#line 101 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = CSS_SPACE;   }
	break;
	case 11:
#line 102 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = CSS_COMMENT; }
	break;
	case 12:
#line 111 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{
    switch(entity) {
    case JS_SPACE:
      ls
      break;
    case JS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(JS_LANG)
      break;
    case NEWLINE:
      std_newline(JS_LANG)
    }
  }
	break;
	case 13:
#line 130 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 14:
#line 142 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 15:
#line 152 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 16:
#line 163 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = JS_SPACE; }
	break;
	case 17:
#line 166 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = NEWLINE;  }
	break;
	case 18:
#line 167 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = JS_ANY;   }
	break;
	case 19:
#line 181 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = JS_SPACE;   }
	break;
	case 20:
#line 182 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = JS_COMMENT; }
	break;
	case 21:
#line 190 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{
    switch(entity) {
    case HTML_SPACE:
      ls
      break;
    case HTML_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(HTML_LANG)
      break;
    case NEWLINE:
      std_newline(HTML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HTML_LANG)
    }
  }
	break;
	case 22:
#line 211 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 23:
#line 222 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = INTERNAL_NL; }
	break;
	case 24:
#line 227 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ p = ts; {cs = stack[--top]; goto _again;} }
	break;
	case 25:
#line 229 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = CSS_SPACE; }
	break;
	case 26:
#line 232 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = NEWLINE;   }
	break;
	case 27:
#line 233 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = CSS_ANY;   }
	break;
	case 28:
#line 239 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ p = ts; {cs = stack[--top]; goto _again;} }
	break;
	case 29:
#line 241 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = JS_SPACE; }
	break;
	case 30:
#line 244 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = NEWLINE;  }
	break;
	case 31:
#line 245 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = JS_ANY;   }
	break;
	case 32:
#line 249 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = CHECK_BLANK_ENTRY; }
	break;
	case 33:
#line 250 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ saw(CSS_LANG); }
	break;
	case 34:
#line 251 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = CHECK_BLANK_ENTRY; }
	break;
	case 35:
#line 252 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ saw(JS_LANG); }
	break;
	case 36:
#line 254 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = HTML_SPACE; }
	break;
	case 37:
#line 257 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = NEWLINE;    }
	break;
	case 38:
#line 258 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = HTML_ANY;   }
	break;
	case 39:
#line 270 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ {cs = stack[--top]; goto _again;} }
	break;
	case 40:
#line 272 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = CSS_SPACE;   }
	break;
	case 41:
#line 273 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = CSS_COMMENT; }
	break;
	case 42:
#line 281 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ {cs = stack[--top]; goto _again;} }
	break;
	case 43:
#line 283 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = JS_SPACE;   }
	break;
	case 44:
#line 284 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = JS_COMMENT; }
	break;
	case 45:
#line 296 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = HTML_SPACE;   }
	break;
	case 46:
#line 297 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ entity = HTML_COMMENT; }
	break;
	case 49:
#line 1 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 50:
#line 86 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 51:
#line 87 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 52:
#line 37 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{
    switch(entity) {
    case CSS_SPACE:
      ls
      break;
    case CSS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(CSS_LANG)
      break;
    case NEWLINE:
      std_newline(CSS_LANG)
    }
  }}
	break;
	case 53:
#line 37 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{
    switch(entity) {
    case CSS_SPACE:
      ls
      break;
    case CSS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(CSS_LANG)
      break;
    case NEWLINE:
      std_newline(CSS_LANG)
    }
  }}
	break;
	case 54:
#line 37 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case CSS_SPACE:
      ls
      break;
    case CSS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(CSS_LANG)
      break;
    case NEWLINE:
      std_newline(CSS_LANG)
    }
  }}
	break;
	case 55:
#line 37 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case CSS_SPACE:
      ls
      break;
    case CSS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(CSS_LANG)
      break;
    case NEWLINE:
      std_newline(CSS_LANG)
    }
  }}
	break;
	case 56:
#line 37 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case CSS_SPACE:
      ls
      break;
    case CSS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(CSS_LANG)
      break;
    case NEWLINE:
      std_newline(CSS_LANG)
    }
  }}
	break;
	case 57:
#line 37 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{{p = ((te))-1;}{
    switch(entity) {
    case CSS_SPACE:
      ls
      break;
    case CSS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(CSS_LANG)
      break;
    case NEWLINE:
      std_newline(CSS_LANG)
    }
  }}
	break;
	case 58:
#line 94 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{
    callback(CSS_LANG, css_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 59:
#line 104 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 60:
#line 94 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    callback(CSS_LANG, css_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 61:
#line 104 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;}
	break;
	case 62:
#line 104 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{{p = ((te))-1;}}
	break;
	case 63:
#line 164 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 64:
#line 165 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 65:
#line 111 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{
    switch(entity) {
    case JS_SPACE:
      ls
      break;
    case JS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(JS_LANG)
      break;
    case NEWLINE:
      std_newline(JS_LANG)
    }
  }}
	break;
	case 66:
#line 111 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{
    switch(entity) {
    case JS_SPACE:
      ls
      break;
    case JS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(JS_LANG)
      break;
    case NEWLINE:
      std_newline(JS_LANG)
    }
  }}
	break;
	case 67:
#line 111 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case JS_SPACE:
      ls
      break;
    case JS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(JS_LANG)
      break;
    case NEWLINE:
      std_newline(JS_LANG)
    }
  }}
	break;
	case 68:
#line 164 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;}
	break;
	case 69:
#line 111 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case JS_SPACE:
      ls
      break;
    case JS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(JS_LANG)
      break;
    case NEWLINE:
      std_newline(JS_LANG)
    }
  }}
	break;
	case 70:
#line 111 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case JS_SPACE:
      ls
      break;
    case JS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(JS_LANG)
      break;
    case NEWLINE:
      std_newline(JS_LANG)
    }
  }}
	break;
	case 71:
#line 111 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{{p = ((te))-1;}{
    switch(entity) {
    case JS_SPACE:
      ls
      break;
    case JS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(JS_LANG)
      break;
    case NEWLINE:
      std_newline(JS_LANG)
    }
  }}
	break;
	case 72:
#line 172 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{
    callback(JS_LANG, js_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 73:
#line 184 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 74:
#line 172 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    callback(JS_LANG, js_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 75:
#line 172 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    callback(JS_LANG, js_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 76:
#line 184 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;}
	break;
	case 77:
#line 184 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{{p = ((te))-1;}}
	break;
	case 78:
#line 227 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 79:
#line 230 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 80:
#line 231 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 81:
#line 37 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{
    switch(entity) {
    case CSS_SPACE:
      ls
      break;
    case CSS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(CSS_LANG)
      break;
    case NEWLINE:
      std_newline(CSS_LANG)
    }
  }}
	break;
	case 82:
#line 37 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{
    switch(entity) {
    case CSS_SPACE:
      ls
      break;
    case CSS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(CSS_LANG)
      break;
    case NEWLINE:
      std_newline(CSS_LANG)
    }
  }}
	break;
	case 83:
#line 37 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case CSS_SPACE:
      ls
      break;
    case CSS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(CSS_LANG)
      break;
    case NEWLINE:
      std_newline(CSS_LANG)
    }
  }}
	break;
	case 84:
#line 37 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case CSS_SPACE:
      ls
      break;
    case CSS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(CSS_LANG)
      break;
    case NEWLINE:
      std_newline(CSS_LANG)
    }
  }}
	break;
	case 85:
#line 37 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case CSS_SPACE:
      ls
      break;
    case CSS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(CSS_LANG)
      break;
    case NEWLINE:
      std_newline(CSS_LANG)
    }
  }}
	break;
	case 86:
#line 37 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{{p = ((te))-1;}{
    switch(entity) {
    case CSS_SPACE:
      ls
      break;
    case CSS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(CSS_LANG)
      break;
    case NEWLINE:
      std_newline(CSS_LANG)
    }
  }}
	break;
	case 87:
#line 239 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 88:
#line 242 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 89:
#line 243 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 90:
#line 111 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{
    switch(entity) {
    case JS_SPACE:
      ls
      break;
    case JS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(JS_LANG)
      break;
    case NEWLINE:
      std_newline(JS_LANG)
    }
  }}
	break;
	case 91:
#line 111 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{
    switch(entity) {
    case JS_SPACE:
      ls
      break;
    case JS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(JS_LANG)
      break;
    case NEWLINE:
      std_newline(JS_LANG)
    }
  }}
	break;
	case 92:
#line 111 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case JS_SPACE:
      ls
      break;
    case JS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(JS_LANG)
      break;
    case NEWLINE:
      std_newline(JS_LANG)
    }
  }}
	break;
	case 93:
#line 242 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;}
	break;
	case 94:
#line 111 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case JS_SPACE:
      ls
      break;
    case JS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(JS_LANG)
      break;
    case NEWLINE:
      std_newline(JS_LANG)
    }
  }}
	break;
	case 95:
#line 111 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case JS_SPACE:
      ls
      break;
    case JS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(JS_LANG)
      break;
    case NEWLINE:
      std_newline(JS_LANG)
    }
  }}
	break;
	case 96:
#line 111 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{{p = ((te))-1;}{
    switch(entity) {
    case JS_SPACE:
      ls
      break;
    case JS_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(JS_LANG)
      break;
    case NEWLINE:
      std_newline(JS_LANG)
    }
  }}
	break;
	case 97:
#line 250 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{ {stack[top++] = cs; cs = 217; goto _again;} }}
	break;
	case 98:
#line 252 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{ {stack[top++] = cs; cs = 224; goto _again;} }}
	break;
	case 99:
#line 255 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 100:
#line 256 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 101:
#line 190 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{
    switch(entity) {
    case HTML_SPACE:
      ls
      break;
    case HTML_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(HTML_LANG)
      break;
    case NEWLINE:
      std_newline(HTML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HTML_LANG)
    }
  }}
	break;
	case 102:
#line 190 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{
    switch(entity) {
    case HTML_SPACE:
      ls
      break;
    case HTML_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(HTML_LANG)
      break;
    case NEWLINE:
      std_newline(HTML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HTML_LANG)
    }
  }}
	break;
	case 103:
#line 190 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case HTML_SPACE:
      ls
      break;
    case HTML_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(HTML_LANG)
      break;
    case NEWLINE:
      std_newline(HTML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HTML_LANG)
    }
  }}
	break;
	case 104:
#line 190 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case HTML_SPACE:
      ls
      break;
    case HTML_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(HTML_LANG)
      break;
    case NEWLINE:
      std_newline(HTML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HTML_LANG)
    }
  }}
	break;
	case 105:
#line 190 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    switch(entity) {
    case HTML_SPACE:
      ls
      break;
    case HTML_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(HTML_LANG)
      break;
    case NEWLINE:
      std_newline(HTML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HTML_LANG)
    }
  }}
	break;
	case 106:
#line 190 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{{p = ((te))-1;}{
    switch(entity) {
    case HTML_SPACE:
      ls
      break;
    case HTML_ANY:
      code
      break;
    case INTERNAL_NL:
      std_internal_newline(HTML_LANG)
      break;
    case NEWLINE:
      std_newline(HTML_LANG)
      break;
    case CHECK_BLANK_ENTRY:
      check_blank_entry(HTML_LANG)
    }
  }}
	break;
	case 107:
#line 270 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 108:
#line 94 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{
    callback(CSS_LANG, css_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 109:
#line 275 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 110:
#line 94 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    callback(CSS_LANG, css_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 111:
#line 275 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;}
	break;
	case 112:
#line 275 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{{p = ((te))-1;}}
	break;
	case 113:
#line 281 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 114:
#line 172 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{
    callback(JS_LANG, js_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 115:
#line 286 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 116:
#line 172 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    callback(JS_LANG, js_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 117:
#line 172 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    callback(JS_LANG, js_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 118:
#line 286 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;}
	break;
	case 119:
#line 286 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{{p = ((te))-1;}}
	break;
	case 120:
#line 293 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{ {stack[top++] = cs; cs = 238; goto _again;} }}
	break;
	case 121:
#line 294 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{ {stack[top++] = cs; cs = 242; goto _again;}  }}
	break;
	case 122:
#line 263 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;{
    callback(HTML_LANG, html_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 123:
#line 299 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p+1;}
	break;
	case 124:
#line 263 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;{
    callback(HTML_LANG, html_entities[entity], cint(ts), cint(te));
  }}
	break;
	case 125:
#line 299 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{te = p;p--;}
	break;
	case 126:
#line 299 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{{p = ((te))-1;}}
	break;
#line 2073 "ext/ohcount_native/ragel_parsers/html.h"
		}
	}

_again:
	_acts = _html_actions + _html_to_state_actions[cs];
	_nacts = (unsigned int) *_acts++;
	while ( _nacts-- > 0 ) {
		switch ( *_acts++ ) {
	case 47:
#line 1 "ext/ohcount_native/ragel_parsers/html.rl.tmp"
	{ts = 0;}
	break;
#line 2086 "ext/ohcount_native/ragel_parsers/html.h"
		}
	}

	if ( cs == 0 )
		goto _out;
	if ( ++p != pe )
		goto _resume;
	_test_eof: {}
	if ( p == eof )
	{
	if ( _html_eof_trans[cs] > 0 ) {
		_trans = _html_eof_trans[cs] - 1;
		goto _eof_trans;
	}
	}

	_out: {}
	}
#line 324 "ext/ohcount_native/ragel_parsers/html.rl.tmp"

  // if no newline at EOF; callback contents of last line
  if (count) { process_last_line(HTML_LANG) }
}

#endif

/*****************************************************************************/
